"""
dict

"""
# 定义
dict1 = {}
dict2 = dict()  # 空字典，list1=list() 空列表,tuple1=tuple() 空元组
# dict3=dict(('name','lucky')) #这种数据会报错
dict3 = dict([('name', 'lucky'), ('age', 18)])  # 元组里面的数据个数必须是两两存在
print(dict3)

# 字典的增删改查
user = {"username": "高嘉银", "password": "123456"}
print(user["username"])
user["phone"] = "18883337187"
user["username"] = "廖立晴"
print(user)

for key in user:
    print(user[key])
    pass
"""
字典里面的函数
items()
values()
keys()
"""
print(user.items())  # dict_items([('username', '廖立晴'), ('password', '123456'), ('phone', '18883337187')])
for i in user.items():
    print(i)
    pass
"""
('username', '廖立晴')
('password', '123456')
('phone', '18883337187')
"""
for key, value in user.items():
    print(key, value)
    pass
"""
username 廖立晴
password 123456
phone 18883337187
"""
print(user.values())
for value in user.values():
    print(value)
    pass
for key in user.keys():
    print(key)
    pass

print('username' in user)  # 判断key是否在user里面

"""
内置函数
get()
pop(,default)
popitem() 随机删除字典中的键值对（一般是从末尾删除元素）
clear() 清空字典
update() 合并操作，相同键覆盖
fromkeys(seq,[default]) 将seq转成字典的形式，如果没有指定默认的value则用None
"""
print(user.get("username"))
print(user.get("test"))  # 该方式获取不存在的key时候不会报异常
print(user.get("test", "test"))  # 如果值不存在就返回默认值test
# print(user["test"])  # 这种方式获取不存在的key时候，会报 KeyError: 'test' 异常

# del user["test"] #删除不存在的key会报错
print(user.pop("username"))  # 删除并返回删除成功的key
print(user.pop("test", "default"))  # 如果没有key，则返回default值，否则会报错

user2 = {"test": "test", "username": "高嘉银"}
user.update(user2)
print(user)
"""
合并，键相同就覆盖
{'password': '123456', 'phone': '18883337187', 'test': 'test', 'username': '高嘉银'}
"""

list1 = ["a", "b", "c"]
new_dict = dict.fromkeys(list1)
print(new_dict)
# {'a': None, 'b': None, 'c': None}
new_dict = dict.fromkeys(list1, 10)
print(new_dict)
# {'a': 10, 'b': 10, 'c': 10}
